package com.yzt.zhuju.network.service;

import com.yzt.zhuju.network.apiconfig.MineUrlConfig;
import com.yzt.zhuju.network.entity.game.GamePunishPriceBean;
import com.yzt.zhuju.network.entity.goods.RechargeBaseBean;
import com.yzt.zhuju.network.entity.goods.WeChatPayBean;
import com.yzt.zhuju.network.entity.mine.MineCardBean;
import com.yzt.zhuju.network.entity.mine.OpenInfoBean;
import com.yzt.zhuju.network.entity.mine.wallet.OrderBaseBean;
import com.yzt.zhuju.network.entity.mine.wallet.WalletBaseBean;
import com.yzt.zhuju.network.entity.mine.wallet.WalletConfigBean;
import com.yzt.zhuju.network.entity.mine.wallet.WalletDetialList;
import com.yzt.zhuju.network.entity.mine.wallet.WalletBean;
import com.yzt.zhuju.network.entity.mine.wallet.WalletScreenEntry;
import com.yzt.zhuju.network.entity.sysConfig.ChatSettingBean;
import com.yzt.zhuju.network.entity.user.OrderBean;
import com.yzt.zhuju.network.entity.user.PersonalDetail;
import com.yzt.plugin_network.response.HttpResponse;

import java.util.List;

import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

/**
 * author : bob
 * date   : 2022/12/6
 * desc   :
 */
public interface MineService {

    /**
     * 设置视频接听状态
     */
    @POST(MineUrlConfig.API_MINE_CALL_ON_LINE)
    Observable<HttpResponse> setCallSwitch(@Body RequestBody body);

    /**
     * 设置视频资费
     */
    @POST(MineUrlConfig.API_MINE_CALL_EXPENSES)
    Observable<HttpResponse> setCallExpenses(@Body RequestBody body);

    /**
     * 获取聊天价格设置
     */
    @GET(MineUrlConfig.API_GET_CALL_PRICE_LIST)
    Observable<HttpResponse<ChatSettingBean>> getCallExpensesList(@Query("targetUid") String targetUid);

    /**
     * 获取个人信息
     */
    @GET(MineUrlConfig.API_MINE_USER_INFO)
    Observable<HttpResponse<PersonalDetail>> getMineUserInfo();

    /**
     * 获取我的卡片的消费提示
     */
    @GET(MineUrlConfig.API_MINE_CARD_TIP)
    Observable<HttpResponse<MineCardBean>> getMineCardInfo();

    /**
     * 我的钱包/消费收入
     */
    @POST(MineUrlConfig.API_WALLET)
    Observable<HttpResponse<WalletBean>> wallet();

    /**
     * 我的钱包/消费收入
     */
    @POST(MineUrlConfig.API_WALLET_CONFIG)
    Observable<HttpResponse<WalletConfigBean>> walletConfig();

    /**
     * 提现
     */
    @POST(MineUrlConfig.API_WALLET_WITHDRAW)
    Observable<HttpResponse<HttpResponse>> withDraw(@Body RequestBody body);

    /**
     * 糖币明细
     */
    @POST(MineUrlConfig.API_WALLET_CANDY)
    Observable<HttpResponse<WalletBaseBean>> walletCandy(@Body RequestBody body);

    /**
     * 订单列表
     */
    @POST(MineUrlConfig.API_ORDER_LIST)
    Observable<HttpResponse<OrderBaseBean>> orderList(@Body RequestBody body);

    /**
     * 订单列表
     */
    @POST(MineUrlConfig.API_ORDER_DETAIL)
    Observable<HttpResponse<OrderBean>> getOrderDetail(@Body RequestBody body);


    /**
     * 收益明细
     */
    @POST(MineUrlConfig.API_WALLET_INCOME)
    Observable<HttpResponse<WalletBaseBean>> walletIncome(@Body RequestBody body);

    /**
     * 历史账单
     */
    @POST(MineUrlConfig.API_WALLET_TRANS)
    Observable<HttpResponse<WalletBaseBean>> walletTrans(@Body RequestBody body);


    /**
     * 获取我的钱包
     */
    @GET(MineUrlConfig.API_WALLET)
    Observable<HttpResponse<WalletBean>> wallet(@Query("isHeartNum") boolean isHeartNum);

    /**
     * 上传图片
     */
    @POST(MineUrlConfig.API_UPDATE_ALBUM)
    Observable<HttpResponse> updateAlbum(@Body RequestBody body);

    /**
     * 我的钱包/消费收入历史
     */
    @GET(MineUrlConfig.API_WALLET_LIST)
    Observable<HttpResponse<List<WalletDetialList>>> walletList(@Query("filterId") String filterId, @Query("assetsType") int assetsType, @Query("page") int page, @Query("size") int size);

    /**
     * 我的钱包/消费筛选条件
     */
    @GET(MineUrlConfig.API_GET_FILTER_LIST)
    Observable<HttpResponse<List<WalletScreenEntry>>> getFilterList(@Query("assetsType") int assetsType);

    /**
     * 消息群发
     */
    @POST(MineUrlConfig.API_MESSAGE_CONTENT)
    Observable<HttpResponse<Object>> messageContent(@Body RequestBody body);

    /**
     * google支付成功请求
     */
    @POST(MineUrlConfig.API_PAYMENT_GOOGLE_NOTIFY)
    Observable<HttpResponse<WeChatPayBean>> googleNotify(@Body RequestBody body);

    /**
     * 获取充值列表
     */
    @POST(MineUrlConfig.API_PAYMENT_LIST)
    Observable<HttpResponse<RechargeBaseBean>> getPaymentList(@Body RequestBody bod);

    /**
     * 钱包详情
     */
    @POST(MineUrlConfig.API_WALLET_DETAIL)
    Observable<HttpResponse<WalletBean>> getWalletDetail(@Body RequestBody body);

    /**
     * 惩罚卡价格
     */
    @POST(MineUrlConfig.API_PUNISH_PRICE)
    Observable<HttpResponse<GamePunishPriceBean>> punishPrice(@Body RequestBody body);

    /**
     * 惩罚卡摇一摇
     */
    @POST(MineUrlConfig.API_PUNISH_SHARK)
    Observable<HttpResponse<GamePunishPriceBean>> punishShark(@Body RequestBody body);

    /**
     * 人脸核验（结束后需要轮询获取结果，得到结果后才跳转
     */
    @POST(MineUrlConfig.API_USER_AUTH)
    Observable<HttpResponse<WalletConfigBean>> userAuth(@Body RequestBody body);

    /**
     * 人脸核验（结束后需要轮询获取结果，得到结果后才跳转
     */
    @POST(MineUrlConfig.API_USER_AUTH_RESULT)
    Observable<HttpResponse<OpenInfoBean>> getESignResult(@Body RequestBody body);

}
